/**
 * 应用入口文件
 * 按顺序加载所有必要的模块
 */

// 加载环境配置
import('./utils/config.js').then(configModule => {
    window.envConfig = configModule.envConfig;
    
    // 加载日志系统
    return import('./utils/logger.js');
}).then(loggerModule => {
    window.logger = loggerModule.logger;
    
    // 加载网络管理器
    return import('./utils/network.js');
}).then(networkModule => {
    window.networkManager = networkModule.networkManager;
    
    // 加载数据迁移管理器
    return import('./utils/migration.js');
}).then(migrationModule => {
    window.dataMigrationManager = migrationModule.dataMigrationManager;
    
    // 加载API模块
    return import('./js/api.js');
}).then(apiModule => {
    window.api = apiModule.api;
    
    // 加载主应用模块
    return import('./js/main.js');
}).then(mainModule => {
    console.log('应用模块加载完成');
}).catch(error => {
    console.error('应用模块加载失败:', error);
    
    // 如果模块加载失败，显示错误信息
    document.addEventListener('DOMContentLoaded', () => {
        const errorContainer = document.createElement('div');
        errorContainer.className = 'error-container';
        errorContainer.innerHTML = `
            <div class="error-message">
                <h2>应用加载失败</h2>
                <p>无法加载应用模块，请刷新页面重试。</p>
                <p>错误详情: ${error.message}</p>
                <button id="retry-btn">重试</button>
            </div>
        `;
        
        document.body.appendChild(errorContainer);
        
        // 添加重试按钮事件
        document.getElementById('retry-btn').addEventListener('click', () => {
            location.reload();
        });
    });
});

// 如果浏览器不支持ES6模块，提供回退方案
if (!window.import) {
    document.addEventListener('DOMContentLoaded', () => {
        const warningContainer = document.createElement('div');
        warningContainer.className = 'warning-container';
        warningContainer.innerHTML = `
            <div class="warning-message">
                <h2>浏览器不支持ES6模块</h2>
                <p>您的浏览器不支持ES6模块，请使用现代浏览器或启用ES6模块支持。</p>
            </div>
        `;
        
        document.body.appendChild(warningContainer);
    });
}